Music generator

ABSTRACT

Techniques are disclosed relating to generating music content. In one embodiment, a method includes determining one or more musical attributes based on external data and generating music content based on the one or more musical attributes. Generating the music content may include selecting from stored sound loops or tracks and/or generating new tracks based on the musical attributes. Selected or generated sound loops or tracks may be layered to generate the music content. Musical attributes may be determined in some embodiments based on user input (e.g., indicating a desired energy level), environment information, and/or user behavior information. Artists may upload tracks, in some embodiments, and be compensated based on usage of their tracks in generating music content. In some embodiments, a method includes generating sound and/or light control information based on the musical attributes.

The present application is a continuation of U.S. application Ser. No.17/080,711, entitled “MUSIC GENERATOR,” filed Oct. 26, 2020, which is acontinuation of U.S. application Ser. No. 16/154,312, filed Oct. 8, 2018(now U.S. Pat. No. 10,817,250), which is a continuation of U.S.application Ser. No. 14/846,396, entitled “MUSIC GENERATOR,” filed Sep.4, 2015 (now U.S. Pat. No. 10,095,467), which is a continuation of U.S.application Ser. No. 14/462,360, entitled “MUSIC GENERATOR,” filed Aug.18, 2014 (now abandoned), which is a continuation of U.S. applicationSer. No. 13/969,372, entitled “MUSIC GENERATOR,” filed Aug. 16, 2013(now U.S. Pat. No. 8,812,144), which claims the benefit of priority toU.S. Provisional App. No. 61/786,479, entitled “ELECTRA.fm,” filed Mar.15, 2013, U.S. Provisional App. No. 61/702,868, entitled “PersonalizedMusic Service, Method, and Product,” filed Sep. 19, 2012, and U.S.Provisional App. No. 61/684,535, entitled “Personalized Music Service,Method, and Product,” filed on Aug. 17, 2012; the disclosures of each ofthe above-referenced applications are incorporated by reference hereinin their entireties.

BACKGROUND Technical Field

This disclosure relates to audio engineering and more particularly togenerating music content.

Description of the Related Art

Streaming music services typically provide songs to users via theInternet. Users may subscribe to these services and stream music to aweb browser or application. Examples of such services include PANDORA,SPOTIFY, GROOVESHARK, etc. Often, a user can select a genre of music orspecific artists to stream. Users can typically rate songs (e.g., usinga star rating or a like/dislike system), and some music services maytailor which songs are streamed to a user based on previous ratings. Thecost of running a streaming service (which may include paying royaltiesfor each streamed song) is typically covered by user subscription costsand/or advertisements played between songs.

Song selection may be limited by licensing agreements and the number ofsongs written for a particular genre. Users may become tired of hearingthe same songs in a particular genre. Further, these services may nottune music to users tastes, environment, behavior, etc.

SUMMARY

Techniques are disclosed relating to generating music content. In oneembodiment, a method includes determining one or more musical attributesbased on external data and generating music content based on the one ormore musical attributes. In one embodiment, generating the music contentmay include selecting from stored sound loops or tracks and/orgenerating new sound loops based on the musical attributes. In oneembodiment, selected or generated tracks may be layered to generate themusic content.

Musical attributes may be determined, in some embodiments, based on userinput, environment information, and/or user behavior information. Insome embodiments, user input may indicate musical attributes directly.In other embodiments, user input may include words associated withparticular moods, a desired energy level, etc. In some embodiments,environment information may include lighting and/or sound levels, forexample. In some embodiments, user behavior information may include userlocation information and/or user purchasing information, for example.

Artists may upload tracks, in some embodiments, and may be compensatedbased on usage of their tracks in generating music content. In someembodiments, a method includes generating sound and/or light controlinformation based on the musical attributes. In some embodiments,generating music content may reduce royalty payments for streaming musicproviders and may provide users with new music content within aparticular genre or mood of music.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating one embodiment of a system thatincludes a music generator;

FIG. 2 is a block diagram illustrating an exemplary embodiment of amusic generator.

FIG. 3A is a diagram illustrating exemplary sampling of music content.

FIG. 3B is a flow diagram illustrating a method for generating musiccontent.

This specification includes references to “one embodiment” or “anembodiment.” The appearances of the phrases “in one embodiment” or “inan embodiment” do not necessarily refer to the same embodiment.Particular features, structures, or characteristics may be combined inany suitable manner consistent with this disclosure.

Various units, circuits, or other components may be described or claimedas “configured to” perform a task or tasks. In such contexts,“configured to” is used to connote structure by indicating that theunits/circuits/components include structure (e.g., circuitry) thatperforms the task or tasks during operation. As such, theunit/circuit/component can be said to be configured to perform the taskeven when the specified unit/circuit/component is not currentlyoperational (e.g., is not on). The units/circuits/components used withthe “configured to” language include hardware—for example, circuits,memory storing program instructions executable to implement theoperation, etc. Reciting that a unit/circuit/component is “configuredto” perform one or more tasks is expressly intended not to invoke 35U.S.C. § 112(f) for that unit/circuit/component.

DETAILED DESCRIPTION

This disclosure initially describes, with reference to FIGS. 1-2 , anexemplary system and music generator. It then describes exemplarysampling techniques and an exemplary method for generating music contentwith reference to FIGS. 3A-3B. In some embodiments, a music generator asdescribed herein may generate music content based on determined musicalattributes in order to match user mood, affect customer behavior, matchan environment, etc. In some embodiments, such music content may reduceroyalty payments by music providers and provide variety within aparticular genre or mood of music.

Referring now to FIG. 1 , a block diagram illustrating one embodiment ofa system 100 for generating music content is shown. In the illustratedembodiment, system 100 includes processor(s) 110, memory 120, trackdatabase 165, loop database 170, and user database 175. In otherembodiments, tracks and loops may be stored in a single database. In oneembodiment, processor(s) 110 and memory 120 are included in a userdevice such as a mobile phone, for example, and may be configured toreceive external data 180 via various input elements of the user deviceor via a network. In another embodiment, processors(s) 110, memory 120,and/or databases 165-175 are included on a server and configured toreceive external data 180 via a network, for example. In still otherembodiments, processor(s) 110 and/or memory 120 may be distributedacross multiple devices in a system. External data 180 may include userinput, information about a listener environment, information about userbehavior, etc. in some embodiments. In various embodiments, functions ofsystem 100 described herein may be performed by hardware, software,firmware, or a combination thereof.

Processor(s) 110, in the illustrated embodiment, are coupled to memory120 and configured to execute program instructions stored in memory 120.In various embodiments, processor(s) 110 may include multiple processingcores and/or system 100 may include multiple processors. In theillustrated embodiment, processor(s) 110 are configured to processexternal data 180.

Memory 120, in the illustrated embodiment, stores program instructionsthat are executable to perform various operations, including those ofmusic generator 130. Memory 120 may be a non-transitorycomputer-readable storage medium, in various embodiments. In someembodiments, memory 120 may be distributed, e.g., with a portion ofmemory 120 included in a server and a portion included in a user device.In addition to program instructions, memory 120 may be configured tostore various metadata indicating musical attributes or otherinformation, music content such as tracks or loops, user information,etc. in some embodiments.

As used herein, the term “loop” refers to sound information for a singleinstrument over a particular time interval. Loops may be played in arepeated manner (e.g., a 30 second loop may be played four times in arow to generate 2 minutes of music content), but loops may also beplayed once, e.g., without being repeated. As used herein, the term“track” may refer a single loop or to an interval that includes multipleloops that are “layered” on top of one another. Tracks also may or maynot be played in a repeated manner.

Music generator 130, in the illustrated embodiment, includes userinterface 135, mood controller 140, music constructor 145, intakeanalyzer 150, and instruments 155. In various embodiments, musicgenerator may include additional elements in place of and/or in additionto those shown. In some embodiments, music generator 130 is configuredto determine musical attributes based on external data 180. In theseembodiments, music generator 130 is configured to generate music contentbased on the musical attributes. Exemplary musical attributes generatedby music generator 130 may include tempo (e.g., specified in beats perminute), key (e.g., B Flat Major), complexity, energy, variety, volume,spectrum, envelope, modulation, periodicity, rise and decay time, noise,etc., in various embodiments. Music generator 130 may be configured tocombine stored loops, stored tracks and/or generated loops to generatethe music content.

As used herein, the phrase “music content” refers both to music itself(the audible representation of music), as well as to information usableto play music. Thus, a song recorded as a file on a storage medium (suchas, without limitation a compact disc, flash drive, etc.) is an exampleof music content; the sounds produced by outputting this recorded fileor other electronic representation (e.g., through speakers) is also anexample of music content.

The term “music” includes its well-understood meaning, including soundsgenerated by musical instruments as well as vocal sounds. Thus, musicincludes, for example, instrumental performances or recordings, acappella performances or recordings, and performances or recordings thatinclude both instruments and voice. One of ordinary skill in the artwould recognize that “music” does not encompass all vocal recordings.Works that do not include musical attributes such as rhythm or rhyme—forexample, speeches, newscasts, and audiobooks—are not music.

One piece of music “content” can be distinguished from another piece ofmusic content in any suitable fashion. For example, a digital filecorresponding to a first song may represent a first piece of musiccontent, while a digital file corresponding to a second song mayrepresent a second piece of music content. The phrase “music content”can also be used to distinguish particular intervals within a givenmusical work, such that different portions of the same song can beconsidered different pieces of musical content. Similarly, differenttracks (e.g., piano track, guitar track) within a given musical work mayalso correspond to different pieces of musical content. In the contextof a potentially endless stream of generated music, the phrase “musiccontent” can be used to refer to some portion of the stream (e.g., a fewmeasures or a few minutes).

The present disclosure is concerned with computer-implemented generationof music content, such as by a software program or by computer hardware.The “generation” of music content refers to the creation of acombination of musical elements. As used herein, “generating” musiccontent is distinct from “playing back” music content. Accordingly, acomputer system that reads a computer audio file from a storage mediumand outputs corresponding audio is not “generating” music content withinthe meaning of the present disclosure, but is instead playing back musiccontent.

Music content generated by embodiments of the present disclosure may be“new music content”—combinations of musical elements that have neverbeen previously generated. A related (but more expansive)concept—“original music content”—is described further below. Tofacilitate the explanation of this term, the concept of a “controllingentity” relative to an instance of music content generation isdescribed. Unlike the phrase “original music content,” the phrase “newmusic content” does not refer to the concept of a controlling entity.Accordingly, new music content refers to music content that has neverbefore been generated by any entity or computer system.

Conceptually, the present disclosure refers to some “entity” ascontrolling a particular instance of computer-generated music content.Such an entity owns any legal rights (e.g., copyright) that mightcorrespond to the computer-generated content (to the extent that anysuch rights may actually exist). In one embodiment, an individual thatcreates (e.g., codes various software routines) a computer-implementedmusic generator or operates (e.g., supplies inputs to) a particularinstance of computer-implemented music generation will be thecontrolling entity. In other embodiments, a computer-implemented musicgenerator may be created by a legal entity (e.g., a corporation or otherbusiness organization), such as in the form of a software product,computer system, or computing device. In some instances, such acomputer-implemented music generator may be deployed to many clients.Depending on the terms of a license associated with the distribution ofthis music generator, the controlling entity may be the creator, thedistributor, or the clients in various instances. If there are no suchexplicit legal agreements, the controlling entity for acomputer-implemented music generator is the entity facilitating (e.g.,supplying inputs to and thereby operating) a particular instance ofcomputer generation of music content.

Within the meaning of the present disclosure, computer generation of“original music content” by a controlling entity refers to 1) acombination of musical elements that has never been generated before,either by the controlling entity or anyone else, and 2) a combination ofmusical elements that has been generated before, but was generated inthe first instance by the controlling entity. Content type 1) isreferred to herein as “novel music content,” and is similar to thedefinition of “new music content,” except that the definition of “novelmusic content” refers to the concept of a “controlling entity,” whilethe definition of “new music content” does not. Content type 2), on theother hand, is referred to herein as “proprietary music content.” Notethat the term “proprietary” in this context does not refer to anyimplied legal rights in the content (although such rights may exist),but is merely used to indicate that the music content was originallygenerated by the controlling entity. Accordingly, a controlling entity“re-generating” music content that was previously and originallygenerated by the controlling entity constitutes “generation of originalmusic content” within the present disclosure. “Non-original musiccontent” with respect to a particular controlling entity is musiccontent that is not “original music content” for that controllingentity.

Some pieces of music content may include musical components from one ormore other pieces of music content. Creating music content in thismanner is referred to as “sampling” music content, and is common incertain musical works, and particularly in certain musical genres. Suchmusic content is referred to herein as “music content with sampledcomponents,” “derivative music content,” or using other similar terms.In contrast, music content that does not include sampled components isreferred to herein as “music content without sampled components,”“non-derivative music content,” or using other similar terms.

In applying these terms, it is noted that if any particular musiccontent is reduced to a sufficient level of granularity, an argumentcould be made that this music content is derivative (meaning, in effect,that all music content is derivative). The terms “derivative” and“non-derivative” are not used in this sense in the present disclosure.With regard to the computer generation of music content, such computergeneration is said to be derivative (and result in derivative musiccontent) if the computer generation selects portions of components frompre-existing music content of an entity other than the controllingentity (e.g., the computer program selects a particular portion of anaudio file of a popular artist's work for inclusion in a piece of musiccontent being generated). On the other hand, computer generation ofmusic content is said to be non-derivative (and result in non-derivativemusic content) if the computer generation does not utilize suchcomponents of such pre-existing content. Note some pieces of “originalmusic content” may be derivative music content, while some pieces may benon-derivative music content.

It is noted that the term “derivative” is intended to have a broadermeaning within the present disclosure than the term “derivative work”that is used in U.S. copyright law. For example, derivative musiccontent may or may not be a derivative work under U.S. copyright law.The term “derivative” in the present disclosure is not intended toconvey a negative connotation; it is merely used to connote whether aparticular piece of music content “borrows” portions of content fromanother work.

Further, the phrases “new music content,” “novel music content,” and“original music content” are not intended to encompass music contentthat is only trivially different from a pre-existing combination ofmusical elements. For example, merely changing a few notes of apre-existing musical work does not result in new, novel, or originalmusic content, as those phrases are used in the present disclosure.Similarly, merely changing a key or tempo or adjusting a relativestrength of frequencies (e.g., using an equalizer interface) of apre-existing musical work does not produce new, novel, or original musiccontent. Moreover, the phrases, new, novel, and original music contentare not intended to cover those pieces of music content that areborderline cases between original and non-original content; instead,these terms are intended to cover pieces of music content that areunquestionably and demonstrably original, including music content thatwould be eligible for copyright protection to the controlling entity(referred to herein as “protectable” music content). Further, as usedherein, the term “available” music content refers to music content thatdoes not violate copyrights of any entities other than the controllingentity. New and/or original music content is often protectable andavailable. This may be advantageous in preventing copying of musiccontent and/or paying royalties for music content.

When generating derived music content, pre-existing tracks may becombined in various ways. For example, referring to FIG. 3A,pre-existing music content 308 (e.g., a portion of a song) begins at theleft dashed line, ends at the right dashed line, and includes multiplelayered tracks/loops 301-305. In the illustrated example, track 303 endsat a particular point in time at which track 304 begins. In theillustrated example, track 306 begins in the middle of music content308. Sampling music content 308 may include taking slices of musiccontent 308 in the time dimension and inserting/layering the slices intogenerated music content. Sampling music content 308 may also includedecomposing music content 308, e.g., by extracting track 304 andinserting/layering it with generated music content. In variousembodiments, music content 308 or portions thereof may also be modifiedin other ways before combining with other content, including changingkeys, changing tempo, modulation, equalization, etc.

Music content may also be classified using various parameters, such as asampling parameter, a melody parameter, and a non-derivative parameter.

As used herein, the term “sampling parameter” refers to an amount ofsampling used in the time dimension in music content. For example, forgiven music content, the sampling parameter refers to what percentage ofthe content in the time dimension includes sampled music over theinterval of the music content. Exemplary ranges of acceptable samplingparameters include 0-10%, 0-20%, 0-30%, 0-40%, 0-50%, 0-60%, and 0-70%.In some situations, various parameters may be measured over a minimumtime interval of music content such as 30 seconds or a few minutes, forexample.

Further, as used herein, the term “melody parameter” refers to an amountof melody in the time dimension over a given interval of music contentthat is borrowed from other music content. For example, for a givennumber of measures of music content, all or a portion of those measuresof the music content may include a melody borrowed from other musiccontent. Exemplary ranges of acceptable melody parameters include 0-5%,0-10%, 0-30%, 0-40%, etc. Melody parameters may also be specified as aratio for particular intervals of music content. For example a melodyparameter may specify that at most 2 measures of melody in any given 8measures of content is pre-existing content. Other exemplary ratiosinclude 1, 3 or 4 measures of pre-existing melody in 8 measures of musiccontent, etc.

Still further, as used herein, the term “non-derivative parameter”refers to an amount of music content that is not derived frompre-existing content. For example, if half of the loops that arecombined to generate music content are generated by software while theother half are stored pre-existing loops, the derivative parameter is50%. The derivative parameter may be determined at the loop granularity,the track granularity, different time granularities, etc. For example,if 4 out of 10 combined tracks are pre-existing tracks, thenon-derivative parameter would be 40%. Similarly, if a fourth of musiccontent over a given interval included pre-existing content (which mayor may not be layered with other content), the non-derivative parameterin time would be 40%. As discussed above, a minimum time interval, e.g.,30 seconds or a minute, may be defined for measuring this parameter.Exemplary ranges of acceptable non-derivative parameters include10-100%, 30-100%, and 70-100%. In some embodiments, new music content isgenerated by combining tracks that are 100% non-derivative. In otherembodiments, music content may be classified using other quantitativeparameters in addition to and/or in place of those discussed herein.

As used herein, the phrase “combined music content” refers to generatedmusic content that has at least one of the following properties:

-   -   A sampling parameter smaller than 60%    -   A melody parameter smaller than 10% or    -   A non-derivative parameter greater than 30%

Referring again to FIG. 2 , in one embodiment, music generator 130 isconfigured to execute on a user device such as a mobile phone orpersonal computer. In other embodiments, all or a portion of musicgenerator may be executed on a server at a different location from wheremusic is actually played. For example, music generator 130 may beconfigured to stream music to a mobile application or a web application.In such embodiments, processor(s) 110 may be configured to couple to anetwork, either using a physical coupling or wirelessly. In someembodiments, music generator 130 is configured to generate “house”music. There are many existing tracks in the house music genre, andmechanisms for mixing house music tracks are well understood.

User interface 135, in some embodiments, may allow users, artists,customers, DJ's, etc. to interact with music generator 130, e.g., usinga graphical user interface (GUI). User interface 135 may be installed asan application on a user device or may be a webpage, for example. Insome embodiments, user interface 135 may include multiple differentinterfaces for different device types and may include both executableapplications and web interfaces. For example, user interface 135 mayinclude different interfaces for personal computers than for mobiledevices. Further, user interface 135 may include different interfacesfor different types of customers. Artists who upload tracks may use adifferent interface than users who stream music content. Similarly,commercial users may use yet another interface to customize externaldata 180 formats and types, for example.

Mood controller 140, in one embodiment, is configured to generatemusical attributes based on external data 180. In one exemplaryembodiment, a user may input a desired energy level, and mood controller140 may be configured to generate tempo, key, and complexity attributesfor music to match the energy level. Mood controller 140 may beconfigured to dynamically adjust musical attributes based on externaldata received while music generator 130 is generating music content, inreal-time.

Music constructor 145, in one embodiment, is configured to generatemusic based on the musical attributes determined by mood controller 140.In one embodiment, music constructor 145 is configured to use storedtracks and/or loops and/or loops generated by instruments 155 togenerate original music content. Music constructor 145 may be configuredto adjust layering or mixing of tracks/loops based on changing musicalattributes from mood controller 140 in real-time. Music constructor 145may include various algorithms for making such transitions in a way thatis pleasing to the listener, without noticeable breaks in generation ofmusic content, using various techniques for dynamically changing tempo,key, etc. In various embodiments, music constructor 145 is configured tosample, layer, and/or insert tracks/loops to combine the tracks/loops togenerate music content.

Intake analyzer 150, in one embodiment, is configured to determinemusical attributes of uploaded tracks. In one embodiment, artists canupload tracks to be used by music generator 130. In some embodiments,intake analyzer 150 may perform spectral analysis which may analyze thetimbre of input tracks, e.g., using Fourier transforms. Intake analyzer150 may be configured to analyze various musical attributes such asspectrum, envelope, modulation, rise and decay time, noise, etc. In oneembodiment, music generator 130 is configured to monitor use of uploadedtracks and artists may be compensated based on the amount their tracksare used in generating new music. In some embodiments, artists uploadingtracks may be required to sign a licensing agreement (e.g., similar tothe public licensing agreements for software) that allows re-use ofuploaded content for non-commercial use. In some embodiments, artistsmay specify musical attributes of uploaded tracks in place of or inaddition to intake analyzer 150 determining this information.

Instruments 155, in one embodiment, are configured to generate soundloops based on input musical attributes. Each instrument may beconfigured to generate a different type of sound loop, e.g., for adifferent musical instruments or for voices. Generated loops may bestored in loop database 170 in one embodiment. Sound loops generated byinstruments 155 may be advantageous in some embodiments because they maybe royalty-free. Generated sound loops may also be useful in situationsin which music generator executes on a user device that is not coupledto a network and thus may be unable to download stored loops and tracksfrom a database. In one embodiment, mood controller 140 is configured toselect instrument/track/loop types based on desired energy level.

In one embodiment, an application programming interface (API) may allowartists to generate their own instrument modules that generate soundloops based on input musical attribute information. These modules may beuploaded to a server and downloadable by other users. Similarly, in oneembodiment, users may generate their own algorithms for mood controller140, and these algorithms may be uploaded and shared with other users.

User database 175 may store user information and preferences. In oneembodiment, user database 175 includes ratings history for users and maystore links to saved music content generated for particular users. Userdatabase 175 may also store information for users/artists who submittracks/loops, which may enable those users to be compensated for use oftheir tracks in generating music content. User database 175 may beconfigured to track popular loops/tracks and/or artists in order toimprove the quality of generated music content by including more popularmusical elements more often than less popular elements.

In some embodiments, music generator 130 is configured to save generatedmusic content for sending to a user at a later time (as opposed tostreaming content as it is generated). In some embodiments, this savedcontent may be stored in user database 175. In one embodiment, savedsongs are classified and searchable by musical attributes. Thus, in oneembodiment, users may listen to a particular “station” of pre-generatedoriginal music content for a particular mood, with particular musicalattributes. In other embodiments, users may listen to stations thatstream music content that is generated in real-time for particularmusical attributes.

Exemplary Music Generator

Referring now to FIG. 2 , a block diagram illustrating one embodiment ofa portion of music generator 130 is shown. In the illustratedembodiment, mood controller 140 is configured to generate musicalattributes (complexity, key, tempo, and energy in the illustratedembodiment) based on received external data. In the illustratedembodiment, music constructor 145 is configured to generate musiccontent based on the musical attributes by layering tracks and/or loopsfrom track database 165, loop database 170 and/or instrument 155.

Mood controller 140, in the illustrated embodiment, is configured toreceive multiple inputs including musical attributes, words, environmentinformation, and behavior information. In other embodiments, moodcontroller 140 may be configured to receive additional types of externaldata in addition to and/or in place of the types shown.

In one embodiment, mood controller 140 is configured to receive musicalattributes directly from users. For example, a user interface mayinclude dials or similar graphics that allow a user to directly adjustattributes such as tempo and key. In one embodiment, user input issimplified and a user simply inputs a desired energy level for a giventype of music, or inputs some other more abstract musical attribute.

In one embodiment, mood controller 140 is configured to receive wordsassociated with particular moods such as “happy,” “relaxed” or“exercise” which may be used to determine corresponding musicalattributes. Musical attributes may be classified into ranges thatcorrespond to particular moods in this embodiment.

In one embodiment, mood controller 140 is configured to receiveinformation about a listener environment. Examples of this informationinclude lighting information and sound information. For example, basedon conversation volume in a room, mood controller 140 may be configuredto adjust musical attributes to avoid drowning out conversation or toincrease generated music volume at a concert with a boisterous crowd. Inone embodiment, sound information may be measured by microphones in userdevices communicating with music generator 130. As another example, moodcontroller 140 may be configured to adjust musical attributes based onlight intensity and/or color in a room.

In one embodiment, mood controller 140 is configured to receiveinformation about user behavior. Behavior information may include, forexample, information about user locations in a shopping mall or thenumber of purchases at point-of-sale terminals. In one embodiment, moodcontroller 140 is configured to store this behavior information andadjust generated musical attributes based on the behavior information.For example, particular musical attributes may result in better sales onMondays but not on weekends, and mood controller 140 may be configuredto store this information and adjust musical attributes accordingly. Inone embodiment, this information may be stored separately for eachcustomer (e.g., for each store in a shopping mall). In anotherembodiment, this information may be aggregated for multiple customers(e.g., across stores nationwide). In various embodiments, feedback loopsmay be implemented for any input to mood controller 140. In theseembodiments, mood controller 140 may be configured to generate musicalattributes to encourage or discourage various user behavior or, moregenerally, to affect any of various input parameters.

As described above, exemplary musical attributes may include tempo andkey. Musical attributes may also include more abstract parameters suchas energy, complexity, or variety. Complexity may refer to a number ofloops or instruments that are included in a composition. Energy may berelated to the other attributes or may be orthogonal to the otherattributes. For example, changing keys or tempos may affect energy.However, for a given tempo and key, energy may be changed by adjustinginstrument types (e.g., by adding high hats or white noise), complexity,volume, etc. Variety may refer to an amount of change in generated musicover time. Variety may be generated for a static set of other musicalattributes (e.g., by selecting different tracks for a given tempo andkey) or may be generated by changing musical attributes over time (e.g.,by changing tempos and keys more often when greater variety is desired).

In some embodiments, music generator 130 is configured to continuouslygenerate music content, e.g., without a set beginning and end. Thus,music content may begin and end in response to user input, for example,and play continuously in between the beginning and ending. In order toprovide variation, mood controller 140 may be configured to vary musicalattributes. For example, mood controller 140 may be configured to changekeys during generation of music content. In some embodiments, moodcontroller 140 is configured to use harmonic mixing, which involveswell-known techniques for changing keys using the circle of fifths, forexample. In some embodiments, music generator 130 is configured toinsert quiet intervals into generated music content in order to addvariety and may change keys and/or tempo after such quiet periods inorder to simulate changing “songs” in the generated stream of musiccontent.

Music constructor 145, in the illustrated embodiment, is configured togenerate music content 210 based on received musical attributes. In theillustrated embodiment, music constructor 145 may also be configured togenerate color information 220 and light information 230 based on thereceived musical attributes. In various embodiments, music constructor145 is configured to assemble received tracks/loops in order to generatemusic content based on external data. Techniques for layeringtracks/loops and phrasing or shaping of loops are well known. Phrasingmay be associated with the number of beats per loop, and loops may belayered and repeated in a way that sounds appealing to listeners.Layering may be one technique for mixing or combining sound loops.

In various embodiments, any of various appropriate algorithms may beimplemented to select loops and/or tracks that are compatible (e.g., inthe same key or having similar tempos). It is well understood that musicin specific keys evokes certain emotions. For example, a Beethoven pianoconcerto in B flat has a different qualitative “feel” than the samepiece played in C minor. Likewise, it is well known in music theory thatspecific keys can work together and create pleasing music, whereas otherkeys do not work well together and result in noise when they arecombined. Music generator 130, in some embodiments, is configured togenerate original music to match various different moods or feelings bydetermining sets of musical attributes for each mood or feeling.

In order to vary generated music over time, music constructor 145 may beconfigured to switch out tracks/loops in a random or pseudo-randommanner, whether or not musical attributes change. This randomness mayalso be user-configurable. This randomness may be related to variety ormay be orthogonal to variety (for example, variety can be intentionallyincreased in a non-random manner but can also be increased by increasingrandomness). In one embodiment, music constructor 145 is configured tochange the mix of tracks/loops in a relatively continuous fashion suchthat the generated music content appears to change throughout alistening period.

In the illustrated embodiment, music constructor 145 is configured toreceive tracks from track database 165 and loops from loop database 170and instrument 155. In one embodiment, music generator 130 is configuredto store and process tracks and loops together rather than treating themdifferently.

Track database 165, in some embodiments, is configured to store tracksuploaded from users and/or tracks generated by music constructor 145. Inthe illustrated embodiment, track decomposer 250 is configured to breakdown tracks into loops (e.g., of single instruments) to be stored inloop database 170. In other embodiments, music generator 130 may not beconfigured to decompose tracks into loops. In the illustratedembodiment, track database 165 and loop database 170 are configured tostore metadata for each track/loop that indicates tempo, key, length,and type. Length information may include the length of a track/loop andor phrase boundary information. Type may refer to a category ofinstrument, e.g., drums, strings, voice, acoustic, etc. Types may not bemutually exclusive; a guitar, for example, may be both a string type andan acoustic type. In other embodiments, various elements of musicgenerator 130 may be configured to store other metadata in addition toand/or in place of the particular metadata types described herein.

Loop database 170, in one embodiment, is configured to store loopsgenerated by one or more instruments 155 and/or loops uploaded by usersor decomposed from tracks uploaded by users.

Instrument 155, in one embodiment, may be configured to generate soundsfor a particular instrument based on tempo, key, and length inputs. Insome embodiments, music generator 130 includes multiple instruments 155for generating sound loops to inject new loops into generated musicand/or when stored loops/tracks are not available. In anotherembodiment, a single instrument 155 includes one or more “type” inputs,and is configured to generate sound loops for various types ofinstruments. In some embodiments, instrument 155 may be configured togenerate sound, color, and/or light information corresponding togenerated sound loops.

In the illustrated embodiment, track database 165, loop database 170,and instrument 155 are configured to provide tracks/loops to musicconstructor 145 based on musical attributes determined by moodcontroller 140. In one embodiment, music constructor 145 is configuredto modify tracks/loops that do not match desired musical attributes. Forexample, music constructor 145 (and/or some other element of musicgenerator 130) may be configured to adjust tempo, key, etc. of receivedtracks/loops in order to obtain a plurality of tracks/loops with desiredmusical attributes.

In various embodiments, the functionality described herein forparticular elements may be performed by any of various appropriateelements in a system. The illustrated embodiment illustrates onepossible combination of elements, but other combinations arecontemplated.

Exemplary Environments

In one exemplary environment, music generator 130 is configured generatemusic content for a restaurant. In this environment, music generator 130may receive environment information such as lighting intensity and/orcolor, ambient noise, number of patrons, etc. Music generator 130 mayreceive this information from individual user devices at the restaurantand/or devices owned by the restaurant. For example, the user devicesand/or restaurant devices may visit a particular website or indicate therestaurant as a current location on a software application. Further,users in the restaurant may indicate their desired energy level, ordesired attributes like “quiet” or “exciting.” Still further, therestaurant may store user information such as number of sales, etc.,which may be associated with musical attributes and used to determinemusical attributes for future music content. Generally, in someembodiments, music generator 130 may be configured to use variousfeedback loops to affect inputs such as ambient noise or number ofpatrons and may be configured to attempt increase, decrease, and/orstabilize such inputs. Based on all or a portion of such information,music generator 130 may be configured to combine tracks to generatemusic content based on determined musical attributes. For example, musicgenerator 130 may be configured to generate less complex music with alower volume when it determines that there is significant ambient noisein the restaurant, in order to avoid drowning out conversation.Similarly, music generator 130 may be configured to re-use musicalattributes that result in greater sales volume in the restaurant.

In some embodiments, music generator 130 may also be configured togenerate ambient art to accompany music content. Ambient art may begenerated based on artistic attributes such as complexity, colorpalette, or tone (e.g., darkness or lightness). Music generator 130 maybe configured to determine artistic attributes using similar techniquesas those described herein for determining musical attributes. Thus,music generator 130 may generate or classify and store artisticelements, and layer elements with similar attributes based on externaldata to generate ambient art.

In another exemplary environment, music generator 130 may be used in aclub environment as a virtual DJ. For example, users may indicate theirdesired energy level and/or specific musical attributes. Music generator130 may be configured to aggregate and/or average this information inorder to determine musical attributes to generate music content. In someembodiments, music generator 130 may be configured to generate lightcontrol information to adjust lighting in the club. Further, musicgenerator 130 may be configured to generate sound information to beplayed on user devices in the club and/or light control information toadjust lights on user devices. For example, based on location of userdevices, music generator 130 may be configured to generate waves ofsound and/or light that ripple among devices of a group of listeners atthe club, along with the beat of the generated music content. Similarly,on some embodiments, music generator may be configured to generatevibration control information for user devices. For example, an DJ mightinstruct patrons to perform a particular action or dance move when theirphone vibrates, and send vibration information to user devices based onlocation in order to choreograph patron participation with the music.Location of user devices may be determined, in various embodiments, byglobal navigation systems such as GPS, radio triangulation techniques(e.g., using cellular signals, WIFI, or BLUETOOTH), user input (e.g.,indicating a particular part of the club), etc. Music generator 130 maybe configured to determine which users should receive control data(e.g., which users are present at the club) based on users that arecurrently using a mobile application or website associated with musicgenerator 130. For example, users may be using a mobile application toinput their energy preference using user interface 135 or to “check-in”to the club using a separate application such as FOURSQUARE or FACEBOOK.In one embodiment, users may upload sound loops while listening togenerated music content, and the sound loops may be adjusted and used inthe music content. For example, a user may sing or rap “Bob Jones ishere, let's get the party started” into his mobile device and this loopmay be sampled and combined in the generated music content. In thisembodiment, music generator 130 may send light information to devices ofusers who have uploaded sound loops that are currently being used, inorder to recognize those users in the club environment. For example,users who have uploaded currently-used sound loops may receive controlinformation for a flashing strobe light on their mobile application.

In one embodiment, music generator 130 is not configured to generateoriginal music content, but is configured to generatelight/vibration/sound control information and handle switching betweenstored songs, e.g., using harmonic mixing. In this embodiment, musicgenerator 130 may be configured to aid or take the place of a DJ.

In some embodiments, a commercial customer (e.g., a restaurant or clubowner) may register for a commercial account and pay a monthly fee forchannels that target their desired demographic. In some embodiments, auser or customer may customize external data provided to music generator130. For example, music generator 130 may include an API that allowsother software applications to generate musical attributes or otherexternal data and provide this data to mood controller 140. This mayallow commercial customers to customize their own algorithms fordetermining musical attributes and provide the musical attributesdirectly to music constructor 145, for example.

In some embodiments, music generator 130 may interface with popular DJsoftware such as TRAKTOR, SERATO, REKORDBOX, ABELTON LIVE, etc. A DJ mayuse music generator 130 to generate or select tracks and loopsassociated with particular desired attributes. Further, DJ's may uploadtheir tracks to be used for further mixing by music generator 130. DJ'smay also use music generator 130 to control light, sound, and orvibration on user devices in a crowd. Music generator 130 may also beconfigured to use tracks from repositories such as BEATPORT, forexample.

Yet another exemplary environment is a user's residence. Music generator130 may be configured to determine different music attributes based onlighting, activity level, time of day, day of the week, etc. and may beconfigured to learn preferences of a user in order to generate musiccontent that is pleasing to the user throughout the day. This may allowa user to listen to inexpensive original music without interruption byadvertisements, for example. In some embodiments, music generator 130 isconfigured to store generated music content to later be replayed by auser.

ADDITIONAL EMBODIMENTS

Additional contemplated embodiments include:

-   -   1. A method, comprising:    -   determining, by a computer system, one or more musical        attributes based on external data; and at least one of:    -   generating, by the computer system, new music content based on        the one or more musical attributes;    -   generating, by the computer system, combined music content based        on the one or more musical attributes;    -   generating, by the computer system, protectable music content        based on the one or more musical attributes; and    -   generating, by the computer system, available music content        based on the one or more musical attributes.    -   1. A method, comprising:    -   determining, by a computer system, one or more musical        attributes based on external data; and at least one of:    -   generating, by the computer system, music content with a        particular melody parameter based on the one or more musical        attributes;    -   generating, by the computer system, music content with a        particular sampling parameter based on the one or more musical        attributes; and    -   generating, by the computer system, music content with a        particular non-derivative parameter based on the one or more        musical attributes    -   1. A method, comprising:    -   determining, by a computing system, one or more musical        attributes based on external data; and    -   combining, by the computing system, a plurality of tracks to        generate music content, wherein each of the plurality of tracks        is:    -   selected based on the musical attributes; or    -   generated based on the musical attributes.    -   2. The method of claim 1, wherein the external data includes        information about a listener environment.    -   3. The method of claim 2, wherein the external data includes at        least one of: a light intensity and a noise level.    -   4. The method of claim 1, wherein the external data includes        user behavior information and wherein the determining the one or        more musical attributes includes changing one or more musical        attributes in response to past user behavior.    -   5. The method of claim 4, wherein the user behavior information        includes a number of items purchased at one or more sale        terminals over a given time period.    -   6. The method of claim 1, further comprising:    -   generating light control information based on the musical        attributes.    -   7. The method of claim 6, further comprising:    -   sending the light control information to a plurality of user        devices based on locations of the plurality of user devices.    -   8. The method of claim 1, further comprising:    -   playing the music content using one or more audio devices; and        generating sound information based on the musical attributes,        wherein the sound information is usable to play sounds on one or        more user devices at the same time the music content is played        using the one or more audio devices.    -   9. The method of claim 1, further comprising:    -   receiving a track from an artist;    -   including at least a portion of the track in the music content.    -   10. The method of claim 9, further comprising:    -   determining a payment amount for the artist based on an amount        of use of the track over a given time period.

Other additional contemplated embodiments include:

-   -   1. A non-transitory computer-readable storage medium having        instructions stored thereon that are executable by a computing        device to perform operations comprising: determining one or more        musical attributes based on received data; and combining a        plurality of tracks to generate music content, wherein each of        the plurality of tracks is:    -   selected based on the musical attributes; or    -   generated based on the musical attributes.    -   2. The non-transitory computer-readable storage medium of claim        1, wherein the combining includes layering one or more of the        tracks.    -   3. The non-transitory computer-readable storage medium of claim        1, wherein the combining includes sampling one or more of the        tracks.    -   4. The non-transitory computer-readable storage medium of claim        1, wherein each of the plurality of tracks includes sounds for        only one instrument.    -   5. The non-transitory computer-readable storage medium of claim        2, wherein the operations further comprise:    -   combining one or more additional sound loops with one or more of        the plurality of sound loops to generate further music content,        wherein the combining is performed while playing the music track        and is based on second external data received while playing the        music track.    -   6. The non-transitory computer-readable storage medium of claim        1, wherein the musical attributes include two or more attributes        selected from the group consisting of: tempo, key, energy, and        complexity.    -   7. The non-transitory computer-readable storage medium of claim        1, wherein the external data includes input from one or more        users.    -   8. The non-transitory computer-readable storage medium of claim        7, wherein the input includes a desired energy level.    -   9. The non-transitory computer-readable storage medium of claim        7, wherein the input includes a user rating of generated music        content.    -   10. The non-transitory computer-readable storage medium of claim        7, wherein the external data includes input from multiple users        listening to the music content.

Still other additional contemplated embodiments include a hardwaresystem configured to perform the various functionality described abovewith reference to embodiments of a method and embodiments of anon-transitory computer-readable storage medium.

Exemplary Method

Referring now to FIG. 3 , a flow diagram illustrating one exemplaryembodiment of a method 300 for generating music content is shown. Themethod shown in FIG. 3 may be used in conjunction with any of thecomputer systems, devices, elements, or components disclosed herein,among other devices. In various embodiments, some of the method elementsshown may be performed concurrently, in a different order than shown, ormay be omitted. Additional method elements may also be performed asdesired. Flow begins at block 310.

At block 310, one or more musical attributes are determined based onexternal data. Examples of external data include user input of varioustypes, environmental information such as lighting or sound information,behavior information such as location information or purchaseinformation, feedback information such as user rating information, etc.Rating information may be specified in various forms including numericalratings, like/dislike options, “star” ratings, etc. Determining musicalattributes may include using various algorithms to generate attributesbased on external data. Some of the algorithms may include inputs forpast user preferences or behavior, in order to adjust the algorithms tobetter match music to user moods. Such algorithms may include variousrules and heuristics for controlling the generated music content. Flowproceeds to block 320.

At block 320, a plurality of tracks are combined to generate musiccontent based on the musical attributes. In this embodiment, the tracksare either selected (e.g., from a database) or generated (e.g., byinstrument 155) based on the musical attributes. In some embodiments,selecting tracks may include adjusting tracks/loops that are close tohaving the musical attributes such that they match the musicalattributes. For example, a track with a tempo of 112 beats per minutemay be slightly stretched to generate a track with a desired tempo of110 beats per minute. In some embodiments, music generator 130 isconfigured to generate light and/or sound control information inaddition to the music content. Flow ends at block 320.

Although specific embodiments have been described above, theseembodiments are not intended to limit the scope of the presentdisclosure, even where only a single embodiment is described withrespect to a particular feature. Examples of features provided in thedisclosure are intended to be illustrative rather than restrictiveunless stated otherwise. The above description is intended to cover suchalternatives, modifications, and equivalents as would be apparent to aperson skilled in the art having the benefit of this disclosure.

The scope of the present disclosure includes any feature or combinationof features disclosed herein (either explicitly or implicitly), or anygeneralization thereof, whether or not it mitigates any or all of theproblems addressed herein. Accordingly, new claims may be formulatedduring prosecution of this application (or an application claimingpriority thereto) to any such combination of features. In particular,with reference to the appended claims, features from dependent claimsmay be combined with those of the independent claims and features fromrespective independent claims may be combined in any appropriate mannerand not merely in the specific combinations enumerated in the appendedclaims.

1.-20. (canceled)
 21. A method, comprising: determining, by a computingsystem, multiple musical attributes for a musical composition;selecting, by the computing system based on the multiple musicalattributes, a first set of one or more tracks from a database of storedtracks; generating, by the computing system based on the multiplemusical attributes, second one or more tracks corresponding to one ormore instruments based on the determined musical attributes; andcombining, by the computing system, the first set of one or more tracksand the second set of one or more tracks to generate output musiccontent, wherein the combining includes layering tracks such that theyoverlap in time within the output music content.
 22. The method of claim21, wherein the generating is performed while generating the outputmusic content based on the multiple musical attributes.
 23. The methodof claim 21, wherein at least a portion of the first set of one or moretracks were previously generated by the computing system and stored inthe database.
 24. The method of claim 21, further comprising:decomposing, by the computing system, one or more existing musiccompositions to generate at least a portion of the first set of one ormore tracks.
 25. The method of claim 21, wherein at least a portion ofthe first set of one or more tracks were submitted by an artist.
 26. Themethod of claim 21, wherein the determining the multiple musicalattributes is based on user input.
 27. The method of claim 21, furthercomprising: adjusting, by the computing system, a track of the first setof one or more tracks to align with an attribute of the multiple musicalattributes.
 28. The method of claim 21, wherein at least one of thesecond one or more tracks is a single-instrument loop.
 29. The method ofclaim 21, wherein: at least one of the second one or more tracks is newmusic content; and at most 50% of the output music content is derivedfrom pre-existing content.
 30. The method of claim 21, wherein thecomputing system is a server, the method further comprising the serverstreaming the generated output music content to another device for audiooutput.
 31. The method of claim 21, wherein the computing system is amobile device.
 32. The method of claim 21, wherein the generating andthe combining are performed by different computing devices of thecomputing system that are connected via a network.
 33. The method ofclaim 21, further comprising: analyzing multiple existing tracks andassigning music attributes to the existing tracks based on theanalyzing, wherein the first set of one or more tracks includes at leastone of the analyzed existing tracks.
 34. The method of claim 21, whereinthe generating is based on at least tempo, key, and length attributes.35. The method of claim 21, wherein the second one or more tracksinclude at least first and second tracks corresponding to differentmusical instruments.
 36. A non-transitory computer-readable mediumhaving instructions stored thereon that are executable by a computingsystem to perform operations comprising: determining multiple musicalattributes for a musical composition; selecting, based on the multiplemusical attributes, a first set of one or more tracks from a database ofstored tracks; generating, based on the multiple musical attributes,second one or more tracks corresponding to one or more instruments basedon the determined musical attributes; and combining the first set of oneor more tracks and the second set of one or more tracks to generateoutput music content, wherein the combining includes layering trackssuch that they overlap in time within the output music content.
 37. Thenon-transitory computer-readable medium of claim 36, wherein thegenerating is performed while generating the output music content basedon the multiple musical attributes.
 38. The non-transitorycomputer-readable medium of claim 36, wherein the operations furthercomprise: decomposing one or more existing music compositions togenerate at least a portion of the first set of one or more tracks. 39.The non-transitory computer-readable medium of claim 36, wherein theoperations further comprise: adjusting a track of the first set of oneor more tracks to align with an attribute of the multiple musicalattributes.
 40. A system, comprising: one or more processors; and one ormore computer-readable media having instructions stored thereon that areexecutable by the one or more processors to: determine multiple musicalattributes for a musical composition; select, based on the multiplemusical attributes, a first set of one or more tracks from a database ofstored tracks; generate, based on the multiple musical attributes,second one or more tracks corresponding to one or more instruments basedon the determined musical attributes; and combine the first set of oneor more tracks and the second set of one or more tracks to generateoutput music content, wherein the combination includes to layer trackssuch that they overlap in time within the output music content.